package com.dingwen.stusprboomon.entity;

import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 文章评论实体
 * Document(collation = "comment"): 对应集合名称。可以省略默认使用类小写映射集合
 * CompoundIndex( def = "{'userId': 1, 'nickname': -1}") 符合索引
 * Id: 主键标识，该属性的值会自动对应mongodb的主键字段"_id"，如果该属性名就叫“id”,则该注解可以省略，否则必须写
 * Filed: 该属性对应mongodb的字段的名字，如果一致，则无需该注解
 * Indexed: 添加一个单字段索引
 *
 * @author dingwen
 * 2021.06.23 13:48
 */
@Document("comment")
@Getter
@Setter
@ToString
@Builder
@Accessors(chain = true)
public class CommentEntity implements Serializable {
    private static final long serialVersionUID = 9056057851721363099L;
    @Id
    private String id;

    /**
     * 文章的id
     */
    @Field("articleId")
    private String articleId;

    /**
     * 内容
     */
    @Field("content")
    private String content;

    /**
     * 用户id
     */
    @Indexed
    @Field("userId")
    private String userId;

    /**
     * 点赞数
     */
    @Field("likeNum")
    private Integer likeNum;

    /**
     * 状态
     */
    @Field("state")
    private String state;

    /**
     * 昵称
     */
    @Field("nickname")
    private String nickname;

    /**
     * 创建时间
     */
    @Field("createDatetime")
    private LocalDateTime createDatetime;
}
